package main

import (
	"fmt"
	"runtime"
)

// go语言使用了GPM模型，G指协程本身，
// P代表协程处理器【维护协程队列,维护与具体的M内核线程的绑定厝】，
// M代表内核线程【实际的执行者】
func main() {
	//cpu核心数
	fmt.Println(runtime.NumCPU())
	//P协处理器的数量，默认和cpu核心数一致，传0是返回当前队列长度
	fmt.Println(runtime.GOMAXPROCS(0))
	//设置P协处理器的数量
	//在物理机时，此配置可以默认，但是使用docker时候，需要手动指定P协处理器数量
	runtime.GOMAXPROCS(runtime.NumCPU() * 2)
	//返回协处理器数量
	fmt.Println(runtime.GOMAXPROCS(0))
}
